/* Copyright (c) 2024 Huawei Technologies Co., Ltd.
* This file is a part of the CANN Open Software.
* Licensed under CANN Open Software License Agreement Version 1.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
* ===================================================================================================================*/
#include <gtest/gtest.h>
#include "inc/graph/ascend_ir/ascend_ir.h"
#include "inc/graph/ascend_ir/ascendir_dump_utils.h"
#include "stub_graph.h"
#include <iostream>
#include <fstream>
class UtestAscirDump : public testing::Test {
 protected:
  void SetUp() {}

  void TearDown() {}
};  
using namespace ge;

TEST_F(UtestAscirDump, DumpAscirGraphTest) {
  AscGraph graph("test_graph");
  FaBeforeAutoFuse(graph);
  FaAfterScheduler(graph);
  FaAfterQueBufAlloc(graph);
  DumpAscirGraph dumpgraph;
  dumpgraph.WriteOutToFile("../ascendir_dump_test/dump_graph.txt", graph);
  std::string res = "TilingKey: 1\nGraph Name: test_graph\nAxis:\n    axis1: \n        name: b\n        id: 0\n        type: ORIGINAL\n        bind_block: false\n        size: B\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis2: \n        name: n\n        id: 1\n        type: ORIGINAL\n        bind_block: false\n        size: N\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis3: \n        name: g\n        id: 2\n        type: ORIGINAL\n        bind_block: false\n        size: G\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis4: \n        name: s1\n        id: 3\n        type: ORIGINAL\n        bind_block: false\n        size: S1\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis5: \n        name: s2\n        id: 4\n        type: ORIGINAL\n        bind_block: false\n        size: S2\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis6: \n        name: d\n        id: 5\n        type: ORIGINAL\n        bind_block: false\n        size: D\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {1, 100000}\n    axis7: \n        name: l\n        id: 6\n        type: ORIGINAL\n        bind_block: false\n        size: 8\n        align: 8\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis8: \n        name: s1T\n        id: 7\n        type: TILE_OUTER\n        bind_block: false\n        size: ceiling((S1 / (s1t_size)))\n        align: 8\n        from: {3, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis9: \n        name: s1t\n        id: 8\n        type: TILE_INNER\n        bind_block: false\n        size: s1t_size\n        align: 128\n        from: {3, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis10: \n        name: bngs1T\n        id: 9\n        type: MERGED\n        bind_block: false\n        size: (B * G * N * ceiling((S1 / (s1t_size))))\n        align: 8\n        from: {0, 1, 2, 7, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis11: \n        name: bngs1TB\n        id: 10\n        type: BLOCK_OUTER\n        bind_block: false\n        size: ceiling((B * G * N * ceiling((S1 / (s1t_size))) / (bngs1Tb_size)))\n        align: 8\n        from: {9, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis12: \n        name: bngs1Tb\n        id: 11\n        type: BLOCK_INNER\n        bind_block: false\n        size: bngs1Tb_size\n        align: 8\n        from: {9, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis13: \n        name: s2T\n        id: 12\n        type: TILE_OUTER\n        bind_block: false\n        size: ceiling((S2 / (s2t_size)))\n        align: 8\n        from: {4, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis14: \n        name: s2t\n        id: 13\n        type: TILE_INNER\n        bind_block: false\n        size: s2t_size\n        align: 256\n        from: {4, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis15: \n        name: s1tT\n        id: 14\n        type: TILE_OUTER\n        bind_block: false\n        size: ceiling((s1t_size / (s1tt_size)))\n        align: 8\n        from: {8, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis16: \n        name: s1tt\n        id: 15\n        type: TILE_INNER\n        bind_block: false\n        size: s1tt_size\n        align: 8\n        from: {8, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis17: \n        name: s1tT2\n        id: 16\n        type: TILE_OUTER\n        bind_block: false\n        size: ceiling((s1t_size / (s1tt2_size)))\n        align: 8\n        from: {8, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\n    axis18: \n        name: s1tt2\n        id: 17\n        type: TILE_INNER\n        bind_block: false\n        size: s1tt2_size\n        align: 8\n        from: {8, }\n        split_pair_other_id: UINT64_MAX\n        allow_oversize_axis: 0\n        allow_unaligned_tail: 0\n        value range: {-1, -1}\nOptional:\n    optional1: \n        idx: 1\n        name: head_num\n        data_type: int32_t\n        min_value: 1\n        max_value: 10\nnodes:\n    node1 info: \n        node name: query\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, s1t_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, D, 0, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: X,Y,Z,\n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 0\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 8, 13, 5, 6, \n                    loop_axis: 12\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node2 info: \n        node name: key\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 12, 8, 5, 13, 6, \n                repeats: (S2 / (s2t_size)), 1, D, s2t_size, 1, \n                strides: (D * s2t_size), 0, 1, D, 0, \n                vectorized_axis: 8, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 1\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 8, 5, 13, 6, \n                    loop_axis: 12\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node3 info: \n        node name: bmm1\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, s1t_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, D, 0, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: X,Y,Z,\n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 12, 8, 5, 13, 6, \n                repeats: (S2 / (s2t_size)), 1, D, s2t_size, 1, \n                strides: (D * s2t_size), 0, 1, D, 0, \n                vectorized_axis: 8, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), s1t_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, S2, 1, 0, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 0\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 0\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 2\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 8, 13, 5, 6, \n                    loop_axis: 12\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node4 info: \n        node name: load1\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), s1t_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, S2, 1, 0, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 0\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 0\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 1\n                    alloc_type: QUEUE\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 3\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node5 info: \n        node name: pse\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, S2, 1, 1, \n                strides: (G * N * S1 * S2), (G * S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 4\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node6 info: \n        node name: loadPse\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, S2, 1, 1, \n                strides: (G * N * S1 * S2), (G * S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 2\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 0\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 5\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node7 info: \n        node name: castPse\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 2\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 0\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 3\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 6\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node8 info: \n        node name: add1\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 1\n                    alloc_type: QUEUE\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 3\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 4\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 7\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node9 info: \n        node name: scaleValue\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: \n                repeats: \n                strides: \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 8\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node10 info: \n        node name: mul1\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 4\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: \n                repeats: \n                strides: \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 5\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 9\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node11 info: \n        node name: attenMask\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, 1, 1, S1, S2, 1, 1, \n                strides: (S1 * S2), (S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 10\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node12 info: \n        node name: loadAttenMask\n        inputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, 1, 1, S1, S2, 1, 1, \n                strides: (S1 * S2), (S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 12\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 2\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 11\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node13 info: \n        node name: select\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 5\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 12\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 2\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 6\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 12\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node14 info: \n        node name: softmaxExp\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 12, 14, 15, 13, 5, 6, \n                repeats: 1, (s1t_size / (s1tt_size)), s1tt_size, 1, 1, 8, \n                strides: 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 7\n                    alloc_type: QUEUE\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 3\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 13\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node15 info: \n        node name: softmaxApiTmpBuf\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 12, 14, 15, 13, 5, 6, \n                repeats: (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 8\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 14\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node16 info: \n        node name: flashSoftmax\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 6\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 12, 14, 15, 13, 5, 6, \n                repeats: 1, (s1t_size / (s1tt_size)), s1tt_size, 1, 1, 8, \n                strides: 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 7\n                    alloc_type: QUEUE\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 3\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 12, 14, 15, 13, 5, 6, \n                repeats: (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 8\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 9\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 10\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 4\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 11\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 2\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 15\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node17 info: \n        node name: storeSoftmaxMax\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 11\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 2\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 26\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: 0\n                    merge_scope: 0\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 16\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node18 info: \n        node name: softmaxMax\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 26\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: 0\n                    merge_scope: 0\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: \n                repeats: \n                strides: \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 17\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node19 info: \n        node name: dropMask\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, S2, 1, 1, \n                strides: (G * N * S1 * S2), (G * S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 18\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node20 info: \n        node name: loadDropMask\n        inputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, S2, 1, 1, \n                strides: (G * N * S1 * S2), (G * S1 * S2), (S1 * S2), S2, 1, 0, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 13\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 3\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 19\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node21 info: \n        node name: dropout\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 9\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_UINT8\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 13\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 3\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 14\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 20\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node22 info: \n        node name: castVec1Res\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 14\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 1\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 15\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 0\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 21\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node23 info: \n        node name: storeVec1Res\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 15\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 0\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 14, 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 16\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 4\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 22\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                    loop_axis: 14\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node24 info: \n        node name: value\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 12, 8, 13, 5, 6, \n                repeats: (S2 / (s2t_size)), 1, s2t_size, D, 1, \n                strides: (D * s2t_size), 0, D, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 23\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 8, 13, 5, 6, \n                    loop_axis: 12\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node25 info: \n        node name: bmm2\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 1, \n                strides: (S2 * bngs1Tb_size * s1t_size), (S2 * s1t_size), s2t_size, (S2 * s1tt_size), S2, 1, 0, 0, \n                vectorized_axis: 14, 15, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 16\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 4\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 12, 8, 13, 5, 6, \n                repeats: (S2 / (s2t_size)), 1, s2t_size, D, 1, \n                strides: (D * s2t_size), 0, D, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, s1t_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, D, 0, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 17\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 5\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 24\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 8, 13, 5, 6, \n                    loop_axis: 12\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node26 info: \n        node name: load2\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 8, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, s1t_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, D, 0, 1, 0, \n                vectorized_axis: 8, 13, 5, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 17\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 5\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 18\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 25\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node27 info: \n        node name: addResOut\n        inputs: \n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 19\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 6\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 26\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node28 info: \n        node name: loadAddResOut\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 19\n                    alloc_type: QUEUE\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 6\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 20\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 27\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node29 info: \n        node name: mulRes\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 20\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 12, 14, 15, 13, 5, 6, \n                repeats: 1, (s1t_size / (s1tt_size)), s1tt_size, 1, 1, 8, \n                strides: 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 7\n                    alloc_type: QUEUE\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 3\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 21\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 28\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node30 info: \n        node name: addRes\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 18\n                    alloc_type: BUFFER\n                    position: VECIN\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 21\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 22\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 29\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node31 info: \n        node name: div\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 22\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 14, 15, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, (S2 / (s2t_size)), (s1t_size / (s1tt_size)), s1tt_size, s2t_size, 1, 8, \n                strides: (8 * bngs1Tb_size * s1t_size), (8 * s1t_size), 0, (8 * s1tt_size), 8, 0, 0, 1, \n                vectorized_axis: 14, 15, 13, 5, 6, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 11\n                    alloc_type: QUEUE\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: 2\n                    depth: 2\n                    buf_num: 2\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 23\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 30\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node32 info: \n        node name: castBmm2Res\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 23\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 24\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: 24\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 31\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node33 info: \n        node name: store\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 24\n                    alloc_type: BUFFER\n                    position: VECOUT\n                    hardware: UB\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: 5\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: 24\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 25\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: 0\n                    merge_scope: 0\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 32\n                    sub_exec_order: -1\n                    axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                    loop_axis: 16\n                    initial_axis: 0, 1, 2, 3, 4, 5, 6, \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node34 info: \n        node name: buf\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 25\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: 0\n                    merge_scope: 0\n        outputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, 1, D, 1, \n                strides: (D * G * N * S1), (D * G * S1), (D * S1), D, 0, 1, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: -1\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 33\n                    sub_exec_order: -1\n                    axis: \n                    loop_axis: -1\n                    initial_axis: \n                Api: \n                    Api type: INVALID\n                    Compute unit: INVALID\n                Hint: INVALID\n\n    node35 info: \n        node name: buf_\n        inputs: \n            AscTensor: \n                DataType: DT_FLOAT16\n                Format: ND\n                axis: 10, 11, 12, 16, 17, 13, 5, 6, \n                repeats: (B * G * N * S1 / (bngs1Tb_size * s1t_size)), bngs1Tb_size, 1, (s1t_size / (s1tt2_size)), s1tt2_size, 1, D, 1, \n                strides: (D * bngs1Tb_size * s1t_size), (D * s1t_size), 0, (D * s1tt2_size), D, 0, 1, 0, \n                vectorized_axis: 17, 5, 13, \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 25\n                    alloc_type: GLOBAL\n                    position: GM\n                    hardware: GM\n                    buf_ids: \n                    name: \n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: 0\n                    merge_scope: 0\n        outputs: \n            AscTensor: \n                DataType: DT_DUAL_SUB_UINT8\n                Format: C1HWC0\n                axis: 0, 1, 2, 3, 4, 5, 6, \n                repeats: B, N, G, S1, 1, D, 1, \n                strides: (D * G * N * S1), (D * G * S1), (D * S1), D, 0, 1, 0, \n                vectorized_axis: \n                vectorized_strides: \n                MemAttr: \n                    tensor_id: 1\n                    alloc_type: L1\n                    position: GM\n                    hardware: UB\n                    buf_ids: 1, 2, 3, 4, 5, \n                    name: Mem_\n                MemQueueAttr: \n                    id: -1\n                    depth: -1\n                    buf_num: -1\n                    name: \n                MemBufAttr: \n                    id: -1\n                    name: \n                MemOptAttr: \n                    reuse_id: -1\n                    ref_tensor: -1\n                    merge_scope: -1\n        attr: \n            AscNode: \n                sched: \n                    exec_order: 34\n                    sub_exec_order: 1\n                    axis: 1, 2, 3, 4, 5, \n                    loop_axis: 3\n                    initial_axis: 6, 7, 8, 9, 10, \n                Api: \n                    Api type: BUFFER\n                    Compute unit: MTE1\n                Hint: REDUCE_DATA\n\n";
  EXPECT_EQ(res, dumpgraph.DumpGraph(graph));
}
